﻿#ifndef GRAPHPhasor_H
#define GRAPHPhasor_H

#include <QWidget>
/**********************************************************************************************************************
* 接线方式定义
**********************************************************************************************************************/

#define P1L1    1       //单相单线
#define P3L3    3       //3相3线
#define P3L4    4       //3相4线

typedef struct{
    int x;
    int y;
} GUI_POINT;


/**********************************************************************************************************************
* 背景样式定义
**********************************************************************************************************************/

#define BACKGROUND_CIRCLE   0       //圆形
#define BACKGROUND_RECT     1       //方形

/**********************************************************************************************************************
*   默认的背景半径大小  单位为象素
**********************************************************************************************************************/

#define  DEFAULT_SIZE   100.0F

////////////黄、绿、红定义
#define YELLOW Qt::yellow
#define GREEN Qt::green
#define RED Qt::red

#define OLIVE Qt::darkYellow
#define WHITE QColor(76,76,76)
#define WHITESMOKE QColor(0xDD,0xDD,0xDD)
#define BLACK Qt::white

#define LINE_DOT Qt::DashLine
#define LINE_SOLID Qt::SolidLine

/**********************************************************************************************************************
*   相量箭头类型定义
**********************************************************************************************************************/

typedef struct{
    int         Angle;          //角度
    QColor    Color;          //颜色
    int         Visiable;       //可见性
    GUI_POINT*  pModel;         //箭头模型指针
    char        Text[6];        //说明文字
} PHASOR_ARROW;

/**********************************************************************************************************************
* 3相4线角度数据 类型定义
**********************************************************************************************************************/

typedef struct{
    int Ua;
    int Ub;
    int Uc;
    int Ia;
    int Ib;
    int Ic;
}   _P4ANGLE;

/**********************************************************************************************************************
* 3相3线角度数据 类型定义
**********************************************************************************************************************/

typedef struct{
    int Ua;
    int Ub;
    int Uc;
    int Ia;
    int Uab;
    int Ic;
    int Ucb;
}   _P3ANGLE;

/**********************************************************************************************************************
* 单相单线角度数据 类型定义
**********************************************************************************************************************/

typedef struct{
    int Ua;
    int Ia;
}   _P1ANGLE;

/**********************************************************************************************************************
* PHASOR 类型定义
**********************************************************************************************************************/

typedef struct{
    int             PosX;           //相量圆心位置
    int             PosY;
    int             Connect;        //接线方式
    _P4ANGLE        P4Angle;        //4线角度
    _P3ANGLE        P3Angle;        //3线角度
    _P1ANGLE        P1Angle;        //单线角度
    int             Background;     //背景样式 圆或者 方
    QColor          BkColor;        //背景颜色
    int             Radius;         //背景的半径
    QColor          FrameColor;     //边框颜色
}	PHASOR;


/**********************************************************************************************************************
*   函数名: PhasorDraw
*   建立者: 王昊
* 建立日期: 2009.02.19
* 修改日期: 2009.02.19
*     参数:
*           pData: void指针  需要强行转换为PHASOR指针
*   返回值: 无
* 功能介绍:
*           绘制Phasor
**********************************************************************************************************************/

void PhasorDraw(PHASOR*	pData,QPainter *painter);
float d2f(unsigned long ux[2]);

//extern PHASOR phasor;
//////////////////////////////////////////////////////////////////////
class GraphPhasor : public QWidget
{
    Q_OBJECT
public:
    explicit GraphPhasor(QWidget *parent = 0);
    void paintEvent(QPaintEvent *event);
    QString setData(int jxfs,double UaIa,double UaIb,double UaIc,double UaUb,double UaUc,double UbIb,double UcIc);
    PHASOR phasor;
signals:
    
public slots:
    
};

#endif // GRAPHPhasor_H
